Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device. Flash memory is often made up of groups of memory cells referred to as pages, and multiple pages are often then organized in groups known as blocks. Flash memory cells may be physically configured to store data in different bit per cell densities.
Modern SSDs or similar memory systems utilizing NAND flash (or a similar physical storage media) share a common challenge to continually create space in which to write to the device. Creation of this space is generally accomplished through a maintenance operation commonly termed garbage collection or compaction. This type of maintenance operation is inherent in NAND flash due to the inability to write in place to flash memory, and due the mismatch between the smaller write granularity and larger erase granularity typical of flash memory. Garbage collection usually includes the copying of valid data from a source block to a new block and the subsequent erasure of the source block for reuse. The garbage collection process can introduce a significant processing burden which may reduce SSD performance and endurance, not only because it introduces extra writing of the data being moved, but also because it introduces extra address update data (control data) writing necessary to keep track of the data being moved.